什麼是JPA? 全名Java Persistence API, 通過註解或XML描述, 來指定對象與關係表之間的映射關係(Mapping), 並將實體對象持久化到資料庫中
JPA僅是一種規範, 定義了某些接口(interace), 需要實現這些接口才能運作, 而Hibernate就是實現了JPA接口的ORM框架
什麼是Spring Data JPA?
Spring Data JPA是Spring提供的一套簡化JPA開發的框架, 按照約定好的function命名規則寫dao層接口, 就可以在不實現(implemention)接口的情況下, 直接對資料庫做訪問與操作, 除了基本的CRUD方法, 還提供了分頁, 排序....功能。
而Spring Boot推薦使用Spring Data JPA來做ORM持久層, 不僅Spring框架對其支持度非常完美, 還很大程度的縮減了開發過程。
首先在專案下建立一個Model資料夾, 然後在底下新增Member.java
@Entity
public class Member {
    @Id
    private String mid;
    private String email;
    private String password;
    private String firstName;
    private String lastName;
    private Date createTime;
    private Date updateTime;
    public Member(String email, String password, String firstName, String lastName) {
        this.mid = UUID.randomUUID().toString().replaceAll("-", "");
        this.email = email;
        this.password = password;
        this.firstName = firstName;
        this.lastName = lastName;
    }
    public String getMid() {
        return mid;
    }
    public void setMid(String mid) {
        this.mid = mid;
    }
    public String getEmail() {
        return email;
    }
    public void setEmail(String email) {
        this.email = email;
    }
    public String getPassword() {
        return password;
    }
    public void setPassword(String password) {
        this.password = password;
    }
    public String getFirstName() {
        return firstName;
    }
    public void setFirstName(String firstName) {
        this.firstName = firstName;
    }
    public String getLastName() {
        return lastName;
    }
    public void setLastName(String lastName) {
        this.lastName = lastName;
    }
    public Date getCreateTime() {
        return createTime;
    }
    public void setCreateTime(Date createTime) {
        this.createTime = createTime;
    }
    public Date getUpdateTime() {
        return updateTime;
    }
    public void setUpdateTime(Date updateTime) {
        this.updateTime = updateTime;
    }
}
然後建立Dao資料夾, 並新增MemberRepository.java
@Repository
public interface MemberRepository extends JpaRepository<Member, Long> {
}
在application.properties底下新增
spring.data.rest.base-path=/api
這樣就完成了
什麼!? 這樣就能查詢與操作, 有這麼簡單?
沒錯, 簡單到讓你懷疑人生。
現在新增一筆資料, 來查查看
新增DatabaseLoder.java
@Component
public class DatabaseLoader implements CommandLineRunner {
    @Autowired
    private MemberRepository memberRepository;
    @Override
    public void run(String... args) throws Exception {
    Member member = new Member("michael@gmail.com", "abc12345", "michael", "jordan");
    memberRepository.save(member);
    }
}
現在點選run啟動專案, 打開web browser輸入
localhost:8080/api/members

剛剛新增的資料出來了, 是不是很快很方便呢, 完全不用寫Dao層, Spring都幫我們完成了
JpaRepository除了具備基本的CRUD功能, 還有分頁與排序...等
下一章 Spring Data JPA 寫入與讀取資料 (2)